import java.io.IOException;
import java.net.UnknownHostException;
import java.util.LinkedList;

/**
 * Classe Agent 
 * @author anane & morchid & laaqoud
 *	Version 1.0
 */

public class Agent {
	
	private static Position position;
	private ReceptionOrdre o;
	private ReceptionPosition p;
	private static LinkedList<Position> menacesDames;
	
	
	public Agent(int i,int taille) throws UnknownHostException, IOException{
		position = new Position(i, i);
		o = new ReceptionOrdre(i,taille);
		p = new ReceptionPosition(4000,i,taille);
		menacesDames = new LinkedList<Position>();
		
	}
	
	/**
	 * Lance les thread communiquant avec le serveur et les adversaires
	 * @throws IOException
	 * @throws InterruptedException
	 */
	public void jouer() throws IOException, InterruptedException{
			o.start();
			p.start();
	}
	
	/**
	 * Permet de recuperer la liste des menaces
	 * @return
	 */
	public static LinkedList<Position> getMenaceDames(){
		return menacesDames;
	}
	
	/**
	 * Rajoute une menace dans la liste de l'agent
	 * @param p
	 */
	public static void addMenaceDames(Position p){
		menacesDames.add(p);
	}
	
	/**
	 * Modifie la liste des menaces
	 * @param l
	 */
	public static void setMenaceDames(LinkedList<Position> l){
		menacesDames = l;
	}
	
	/**
	 * Recupere la position de l'agent
	 * @return
	 */
	public static Position getPosition(){
		return position;
	}
	
	/**
	 * Modifie la position de l'agent
	 * @param i 
	 * @param j
	 */
	public static void setPosition(int i,int j){
		position.setX(i);
		position.setY(j);
	}
	
	/**
	 * Modifie la position de l'agent
	 * @param p
	 */
	public static void setPosition (Position p){
		position = p;
	}
	
	/**
	 * Active l'action de survie 
	 * qui consiste a oublier la plus ancienne menace
	 */
	public static void actionSurvie(){
		menacesDames.remove();
	}
	
	
	public static void main (String[] args) throws UnknownHostException, IOException, InterruptedException{
		Agent a = new Agent(4,4);
		a.jouer();
		
	}
	
	
}
